package com.sky.controller.User;

import com.sky.dto.ShoppingCartDTO;
import com.sky.entity.ShoppingCart;
import com.sky.result.Result;


import com.sky.service.ShoppingCartService;
import com.sky.service.UserService;
import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.web.bind.annotation.*;

import java.util.List;

/**
 * @author 贾育权~
 * @version 1.0
 */

@RestController
@Slf4j
@RequestMapping("/user/shoppingCart")
public class ShoppingCartController {//购物车 //表里面存放的是购物的一个又一个的信息
    //向购物车里添加商品
    //我感觉就是自己创建对象的优先级的高于我们spring 容器管理的对象
   @Autowired
   private ShoppingCartService shoppingCartService;//购物车的服务层
    //交给我们的iOC 容器进行管理 然后我们就是实现类和接口的就是对应关系交给我们的容器
    // 进行管理
     @Autowired
    RedisTemplate redisTemplate;

    @PostMapping("/add")
    @ApiOperation("添加购物车")
    public Result add( @RequestBody ShoppingCartDTO shoppingCartDTO){//接收就是我们前端传过来的数据接收我们前端穿过来的数据
        log.info("购物车数据:{}",shoppingCartDTO);//购物车的数据//
        shoppingCartService.add(shoppingCartDTO);//动态绑定机制//

        return Result.success();
    }
    //查询我们的购物车数据
    @GetMapping("/list")
    @ApiOperation("查看购物车")
    public Result<Object> list(){
      List<ShoppingCart> list=  shoppingCartService.showShoppingCart();

        return Result.success(list);
    }

    //清空购物车
    @DeleteMapping("/clean")
    @ApiOperation("清空购物车")
    public Result clean(){
        shoppingCartService.clean();
        return Result.success();
    }
    //删除购物车中的某条数据 也就是哪一个减号对应的功能的实现
    @PostMapping("/sub")
    @ApiOperation("删除购物车中的某条数据")
    public Result sub(@RequestBody ShoppingCartDTO shoppingCartDTO){//用户1 的购物车数据
        /*log.info("购物车数据:{}",shoppingCartDTO);
        shoppingCartService.sub(shoppingCartDTO);
        return Result.success();*/
        log.info("购物车数据:{}",shoppingCartDTO);
        shoppingCartService.sub(shoppingCartDTO);
        return Result.success();
    }
}
